home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tools / cpx_acc / cpxbasic / sources / cpxmains.s < prev    next >
Encoding:
Text File  |  1994-09-22  |  1.8 KB  |  88 lines

  1.  
  2.             .text
  3.             .mc68000
  4.  
  5. ;-------------------------------------------------------------------
  6.             .xref exit
  7. exit:
  8. QuitBASIC:    movem.l    d0-d7/a0-a7,regBASIC
  9.             movem.l    regCPX,d0-d7/a0-a7
  10.             move.l    #'STOP',d0
  11.             rts
  12.  
  13. ;-------------------------------------------------------------------
  14. regBASIC:    .dc.l    0,0,0,0,0,0,0,0            ; d0-d7
  15.             .dc.l    0,0,0,0,0,0,0,stackend    ; a0-a7
  16.  
  17. regCPX:        .dc.l    0,0,0,0,0,0,0,0            ; d0-d7
  18.             .dc.l    0,0,0,0,0,0,0,0            ; a0-a7
  19.  
  20.             .bss
  21.             .export ctrl,ctrlsq
  22. stackCPX:    .ds.b    40960
  23. stackend:    .ds.l    4
  24. systime:    .ds.l    1
  25. ctrl:        .ds.b    1    ; flag for pressing Ctrl-C
  26. ctrlsq:        .ds.b    1    ; flag for pressing Ctrl-S/Q
  27.  
  28.  
  29.             .text
  30.             .import basic
  31.             .xref StartBASIC
  32. StartBASIC:    movem.l    d0-d7/a0-a7,regCPX
  33.             movem.l    regBASIC,d0-d7/a0-a7
  34.             move.l    #QuitBASIC,-(sp)
  35.             st        ctrlsq
  36.             jmp        basic
  37.  
  38.             .import Bconstat
  39.             .xref clock
  40.             .xref BreakBASIC
  41.             .xref WaitBASIC
  42.             .xref Supexec
  43.  
  44. BreakBASIC:    moveq    #2,D0
  45.             jsr        Bconstat(PC)    ; wenn Taste gedrückt: switch
  46.             tst.w    D0
  47.             bne.s    WaitBASIC
  48.             bsr.s    clock            ; Systemzeit holen
  49.             move.l    systime,D1
  50.             cmp.l    D1,D0            ; Fehlercheck
  51.             bcs.s    WaitBASIC        ; Zeit läuft nicht rückwärts!
  52.             add.l   #10,D1            ; 50 ms drauf
  53.             cmp.l    D1,D0            ; Zeit um?
  54.             bcs.s    bye_break;        ; nein
  55.  
  56. WaitBASIC:    movem.l    d0-d7/a0-a7,regBASIC ; Context-Wechsel
  57.             movem.l    regCPX,d0-d7/a0-a7
  58. bye_break:    rts
  59.  
  60.             .xref ContBASIC
  61. ContBASIC:    movem.l    d0-d7/a0-a7,regCPX
  62.             movem.l    regBASIC,d0-d7/a0-a7
  63.             bsr.s    clock            ; Systemzeit holen
  64.             move.l    D0,systime
  65.             rts
  66.  
  67. clock__:    lea        $4BA.w,A0
  68.             move.l    (A0),D0
  69.             rts
  70.  
  71. clock:        lea        clock__(PC),A0
  72.  
  73. Supexec:    move.l    A0,-(SP)
  74.             move.w    #38,-(SP)
  75.             trap    #14
  76.             addq.l    #6,SP
  77.             rts
  78.  
  79.             .data
  80.             .xref m2,xywh
  81. ;MOBLK-Struktur m2
  82. m2:            dc.w    0
  83. ;GRECT-Struktur
  84. xywh:        dc.w    0
  85.             dc.w    0
  86.             dc.w    256
  87.             dc.w    176
  88.